home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / chbmv.z / chbmv
Encoding:
Text File  |  2002-10-03  |  17.1 KB  |  330 lines

  1.  
  2.  
  3.  
  4. CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))                                                            CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CCCCHHHHBBBBMMMMVVVV, ZZZZHHHHBBBBMMMMVVVV - Multiplies a complex vector by a complex Hermitian band
  10.      matrix
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      Single precision complex
  14.  
  15.           Fortran:
  16.                CCCCAAAALLLLLLLL CCCCHHHHBBBBMMMMVVVV ((((_u_p_l_o,,,, _n,,,, _k,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x,,,, _b_e_t_a,,,, _y,,,, _i_n_c_y))))
  17.  
  18.           C/C++:
  19.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  20.                vvvvooooiiiidddd cccchhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt n,,,, iiiinnnntttt k,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,,
  21.                ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x,,,,
  22.                ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_b_e_t_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_y,,,, iiiinnnntttt _i_n_c_y))));;;;
  23.  
  24.           C++ STL:
  25.                ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>
  26.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  27.                vvvvooooiiiidddd cccchhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a_l_p_h_a,,,,
  28.                ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_x,,,, iiiinnnntttt _i_n_c_x,,,,
  29.                ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_b_e_t_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_y,,,, iiiinnnntttt _i_n_c_y))));;;;
  30.  
  31.      Double precision complex
  32.  
  33.           Fortran:
  34.                CCCCAAAALLLLLLLL ZZZZHHHHBBBBMMMMVVVV ((((_u_p_l_o,,,, _n,,,, _k,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x,,,, _b_e_t_a,,,, _y,,,, _i_n_c_y))))
  35.  
  36.           C/C++:
  37.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  38.                vvvvooooiiiidddd zzzzhhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,,
  39.                ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x,,,,
  40.                ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_b_e_t_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_y,,,, iiiinnnntttt _i_n_c_y))));;;;
  41.  
  42.           C++ STL:
  43.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  44.                vvvvooooiiiidddd zzzzhhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a_l_p_h_a,,,,
  45.                ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_x,,,, iiiinnnntttt _i_n_c_x,,,,
  46.                ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_b_e_t_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_y,,,, iiiinnnntttt _i_n_c_y))));;;;
  47.  
  48. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  49.      These routines are part of the SCSL Scientific Library and can be loaded
  50.      using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option.  The ----llllssssccccssss____mmmmpppp option
  51.      directs the linker to use the multi-processor version of the library.
  52.  
  53.      When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is
  54.      4 bytes (32 bits). Another version of SCSL is available in which integers
  55.      are 8 bytes (64 bits).  This version allows the user access to larger
  56.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  57.      by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use
  58.      only one of the two versions; 4-byte integer and 8-byte integer library
  59.      calls cannot be mixed.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))                                                            CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))
  71.  
  72.  
  73.  
  74.      The C and C++ prototypes shown above are appropriate for the 4-byte
  75.      integer version of SCSL. When using the 8-byte integer version, the
  76.      variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header
  77.      file should be included.
  78.  
  79. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  80.      These routines perform the following operation:
  81.  
  82.           _y <- _a_l_p_h_a _A_x + _b_e_t_a _y
  83.  
  84.      where _a_l_p_h_a and _b_e_t_a are scalars, _x and _y are _n-element vectors, and _A is
  85.      an _n-by-_n Hermitian band matrix.
  86.  
  87.      See the NOTES section of this man page for information about the
  88.      interpretation of the data types described in the following arguments.
  89.  
  90.      These routines have the following arguments:
  91.  
  92.      _u_p_l_o      Character.  (input)
  93.                Specifies whether the upper or lower triangular part of the
  94.                band matrix _A is supplied, as follows:
  95.                _u_p_l_o= 'U' or 'u': the upper triangular part of _A is being
  96.                supplied.
  97.                _u_p_l_o= 'L' or 'l': the lower triangular part of _A is being
  98.                supplied.
  99.  
  100.                For C/C++, a pointer to this character is passed.
  101.  
  102.      _n         Integer.  (input)
  103.                Specifies the order of matrix _A.  _n >= 0.
  104.  
  105.      _k         Integer.  (input)
  106.                Specifies the number of superdiagonals of matrix _A.  _k >= 0.
  107.  
  108.      _a_l_p_h_a     Scalar alpha.  (input)
  109.                CCCCHHHHBBBBMMMMVVVV: Single precision complex.
  110.                ZZZZHHHHBBBBMMMMVVVV: Double precision complex.
  111.  
  112.                For C/C++, a pointer to this scalar is passed.
  113.  
  114.      _a         Array of dimension (_l_d_a,_n).  (input)
  115.                CCCCHHHHBBBBMMMMVVVV: Single precision complex array.
  116.                ZZZZHHHHBBBBMMMMVVVV: Double precision complex array.
  117.  
  118.                Before entry with _u_p_l_o = 'U' or 'u, the leading (_k+1)-by-_n part
  119.                of array _a must contain the upper triangular band part of the
  120.                Hermitian matrix, supplied column-by-column, with the leading
  121.                diagonal of the matrix in row _k+1 of the array, the first
  122.                superdiagonal starting at position 2 in row _k, and so on.  The
  123.                top left _k-by-_k triangle of array _a is not referenced.
  124.  
  125.  
  126.  
  127.                                                                         PPPPaaaaggggeeee 2222
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134. CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))                                                            CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))
  135.  
  136.  
  137.  
  138.                Before entry with _u_p_l_o = 'L' or 'l', the leading (_k+1)-by-_n
  139.                part of array _a must contain the lower triangular band part of
  140.                the Hermitian matrix, supplied column-by-column, with the
  141.                leading diagonal of the matrix in row 1 of the array, the first
  142.                subdiagonal starting at position 1 in row 2, and so on.  The
  143.                bottom right _k-by-_k triangle of array _a is not referenced.
  144.  
  145.                The imaginary parts of the diagonal elements need not be set
  146.                and are assumed to be 0.
  147.  
  148.                See the NOTES section for examples of Fortran code that
  149.                transfer a band matrix from conventional full matrix storage to
  150.                band storage.
  151.  
  152.      _l_d_a       Integer.  (input)
  153.                Specifies the first dimension of _a as declared in the calling
  154.                program.  _l_d_a >= (_k+1).
  155.  
  156.      _x         Array of dimension 1+(_n-1) * |_i_n_c_x|.  (input)
  157.                CCCCHHHHBBBBMMMMVVVV: Single precision complex array.
  158.                ZZZZHHHHBBBBMMMMVVVV: Double precision complex array.
  159.                Contains vector _x.
  160.  
  161.      _i_n_c_x      Integer.  (input)
  162.                Specifies the increment for the elements of _x.  _i_n_c_x must not
  163.                be 0.
  164.  
  165.      _b_e_t_a      Scalar beta.  (input)
  166.                CCCCHHHHBBBBMMMMVVVV: Single precision complex.
  167.                ZZZZHHHHBBBBMMMMVVVV: Double precision complex.
  168.  
  169.                For C/C++, a pointer to this scalar is passed.
  170.  
  171.      _y         Array of dimension 1+(_n-1) * |_i_n_c_y|.  (input and output)
  172.                CCCCHHHHBBBBMMMMVVVV: Single precision complex array.
  173.                ZZZZHHHHBBBBMMMMVVVV: Double precision complex array.
  174.                Contains vector _y.  On exit, the updated vector overwrites
  175.                array _y.
  176.  
  177.      _i_n_c_y      Integer.  (input)
  178.                Specifies the increment for the elements of _y.  _i_n_c_y must not
  179.                be 0.
  180.  
  181. NNNNOOOOTTTTEEEESSSS
  182.      The following program segment transfers the upper triangular part of a
  183.      Hermitian band matrix from conventional full matrix storage to band
  184.      storage:
  185.  
  186.               DO 20, J = 1, N
  187.                  M = K + 1 - J
  188.                  DO 10, I = MAX( 1, J - K ), J
  189.                     A( M + I, J ) = MATRIX( I, J )
  190.  
  191.  
  192.  
  193.                                                                         PPPPaaaaggggeeee 3333
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200. CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))                                                            CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))
  201.  
  202.  
  203.  
  204.           10     CONTINUE
  205.           20  CONTINUE
  206.  
  207.  
  208.      The following program segment transfers the lower triangular part of a
  209.      Hermitian band matrix from conventional full matrix storage to band
  210.      storage:
  211.  
  212.               DO 20, J = 1, N
  213.                  M = 1 - J
  214.                  DO 10, I = J, MIN( N, J + K )
  215.                     A( M + I, J ) = MATRIX( I, J )
  216.           10     CONTINUE
  217.           20  CONTINUE
  218.  
  219.  
  220.      These routines are Level 2 Basic Linear Algebra Subprograms (Level 2
  221.      BLAS).
  222.  
  223.      When working backward (_i_n_c_x < 0 or _i_n_c_y < 0), this routine starts at the
  224.      end of the vector and moves backward, as follows:
  225.  
  226.           _x(1-_i_n_c_x * (_n-1)), _x(1-_i_n_c_x * (_n-2)) , ..., _x(1)
  227.  
  228.           _y(1-_i_n_c_y * (_n-1)), _y(1-_i_n_c_y * (_n-2)) , ..., _y(1)
  229.  
  230.  
  231.    DDDDaaaattttaaaa TTTTyyyyppppeeeessss
  232.      The following data types are described in this documentation:
  233.  
  234.           TTTTeeeerrrrmmmm UUUUsssseeeedddd                     DDDDaaaattttaaaa ttttyyyyppppeeee
  235.  
  236.      Fortran:
  237.  
  238.           Array dimensioned _n           xxxx((((nnnn))))
  239.  
  240.           Array of dimensions (_m,_n)     xxxx((((mmmm,,,,nnnn))))
  241.  
  242.           Character                     CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR
  243.  
  244.           Integer                       IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  245.  
  246.           Single precision complex      CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  247.  
  248.           Double precision complex      DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  249.  
  250.      C/C++:
  251.  
  252.           Array dimensioned _n           xxxx[[[[_n]]]]
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.                                                                         PPPPaaaaggggeeee 4444
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266. CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))                                                            CCCCHHHHBBBBMMMMVVVV((((3333SSSS))))
  267.  
  268.  
  269.  
  270.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  271.  
  272.           Character                     cccchhhhaaaarrrr
  273.  
  274.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  275.  
  276.           Single precision complex      ssssccccssssllll____ccccoooommmmpppplllleeeexxxx
  277.  
  278.           Double precision complex      ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx
  279.  
  280.      C++ STL:
  281.  
  282.           Array dimensioned _n           xxxx[[[[_n]]]]
  283.  
  284.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  285.  
  286.           Character                     cccchhhhaaaarrrr
  287.  
  288.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  289.  
  290.           Single precision complex      ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>>
  291.  
  292.           Double precision complex      ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>>
  293.  
  294.      Note that you can explicitly declare multidimensional C/C++ arrays
  295.      provided that the array dimensions are swapped with respect to the
  296.      Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran).
  297.      To avoid a compiler type mismatch error in C++ (or a compiler warning
  298.      message in C), however, the array should be cast to a pointer of the
  299.      appropriate type when passed as an argument to a SCSL routine.
  300.  
  301. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  302.      IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS2222(3S), SSSSSSSSBBBBMMMMVVVV(3S)
  303.  
  304.      IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77
  305.      Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic
  306.      Linear Algebra Subprograms Technical Forum.
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.                                                                         PPPPaaaaggggeeee 5555
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.